package com.jie.demo1.common.ulity;

import com.jie.demo1.common.ulity.interfaceU.imageIdentifyService;
import com.jie.demo1.pojo.Captcha.CaptchaVo;
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.base.Captcha;
import jakarta.annotation.Resource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.UUID;
import java.util.concurrent.TimeUnit;

// 图片验证码工具类
@Component
public class imageIdentify implements imageIdentifyService {
    @Resource
    private RedisTemplate redisTemplate;

    // 生成验证码图片和验证码key值
    @Override
    public  CaptchaVo GetCaptServer() {

        SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 4);// 生成验证码对象，设置宽高和位数

        specCaptcha.setCharType(Captcha.TYPE_DEFAULT); // 验证码类型，这是数字类型，数字类型有数字和字母两种，

        String code = specCaptcha.text().toLowerCase(); //将验证码转为小写，

        String keyI = UUID.randomUUID().toString(); // 使用uuid的方法创建一个唯一的uuid，作为redis的key值

        String image = specCaptcha.toBase64(); //转换成验证码图片的base64字符串，用于前端展示验证码图片

        //存放入redis中，键，值，过期时间，过期时间单位
        redisTemplate.opsForValue().set(keyI, code, 600, TimeUnit.SECONDS); // 将验证码存入redis中，用于校验验证码
        return new CaptchaVo(keyI,image); // 返回验证码图片的base64字符串和验证码key
    }


}
